Wireguard |
您所在的位置:网站首页 › wireguard 共享上网 › Wireguard |
缘起 自己的网络服务正在越来越多. 私有网盘, 札记, Todolist, 相册, 邮箱…甚至有账本, 密码管理工具等等. 如此多的私密服务让我感到十分不安, 因为之前他们中的一部分曾经被我映射到公网上进行使用. 而公网危机四伏. 当你读到这句话的时候, 这台服务器很可能就在被各种扫描器从各种角度”视奸”. 而我的SMTP服务正在一刻不停的受到来自全球IP的暴力破解. 也就是说, 随着服务的增多, 攻击面的扩大, 我的个人信息越来越不安全. 并且, 我的服务器运行在我自己的住处, 被入侵后直接可以进入我日常生活的网络, 就像房间有陌生人能随意出入一样. 于是我使用了wireguard来保护我的通信. 我不再把内网服务暴露出来, 而是我在需要的时候自己进入内网. 但是随着设备的增加, 每次生成秘钥, Copy秘钥, 重复且繁琐的机械工作并不是一件愉快的事情. 于是我决定试着使用一下Wireguard管理面板: Github: Wireguard-easy 就我用下来的体会, 这并不是一个成熟完善的项目, 而只是一个精巧的小工具.这个项目依旧存在一些问题, UI功能并不完善. 我是在后面进行了一些修改后才达到了预期所以, 这并非开箱即用, 各位读者请多考虑. 提供密码保护的web UI, UI设计美观.自动创建带有preshared-key的配置文件, 可以使用二维码扫描或者下载配置文件的方式获取配置信息.可以随时启用禁用某个客户端.其缺点: 功能就以上那些了, 没了, 对.不能在配置文件中轻松配置访问来源, 也就是说, 这个web UI默认也是面向公网. 防护仅靠你设置的密码. 那么你必须需要一个相当长,复杂且无规律的密码. (其实可以解决, 看后文)udp端口配置依旧存在缺陷, docker-compose.yml中修改后并没有什么作用. WEB UI端口实际上在config.js留了参数但是并没有在文档中公开.(有没有用不知道, 希望这里我没弄错. 但是也有别的方法可以解决这个问题.)创建客户端后无法在其UI编辑任何信息, 包括tag.无法在WebUI中手动指定其静态IP, 此外, 除非下载, 或者你可以直接阅读二维码, 那么你甚至不知道其生成的IP到底是什么. 这点对于内网组网相当的不友好.综上, 和Subspace比起来, 读者, 就是你, 安装哪个请自行考量. 对于我嘛, 又不是不能用 安装如果你已经安装好了 Docker, 那么安装过程非常简单. 以下命令来自其项目readme.md $ mkdir ~/.wg-easy $ cd ~/.wg-easy $ wget https://raw.githubusercontent.com/WeeJeWel/wg-easy/master/docker-compose.yml $ vim docker-compose.yml然后我们来运行它 sudo docker-compose up --detach至于docker-compose.yml的内容, env参数的使用, 请去阅读其项目readme. 对, 我懒, 懒得抄XD. 适配&&一些问题(第一个用于测试的wg配置) 导入原来的密钥想用起来的过程并不是非常顺利. 由于我UDP端口已经有指定, 秘钥也在多个服务器已经有了部署, 所以我不能接受其自己生成的新的秘钥. 我需要将其生成的秘钥替换成我自己已经有了的秘钥对. 可惜这个工具不支持上传. 如果你是按照其Readme.md文档配置的, 那么其配置文件就在~/.wg-easy之下的wg0.json中. 修改wg0.conf无效, 它是被自动生成的文件. 哦, 对了, 如果你要修改Tag等等也是在wg0.json中进行更改. 你可以复制之前的秘钥, 粘贴进wg0.json进行覆盖. preshared key可以不管. UDP节点监听端口无法修改的问题另一个就是监听UDP端口的问题. wg-easy默认监听51820, 在docker-compose.yml中WG_PORT这一配置修改后依旧无效. 你甚至能在其项目文件中找到被硬编码的51820这个数字. 我的解决方法是直接在docker-compose.yml中的ports把映射写成:":51820/udp"解决的这个问题. 当然了,这个功能本身通过webUI也不好实现。可能本身设计意图就是改docker-compose.yml所以无伤大雅。 Wireguard: Address unreachable 问题这个被我遗忘了, 不得不提一下, 在服务器上需要设置一下PersistentKeepalive这一项.Wireguard-easy居然也没有生成这个. (懒得吐槽了)因为我的服务器在我自己房间里, 在NAT和防火墙之后. 因为长时间没有流量的时候会被NAT”遗忘”而造成Address unreachable, 导致服务器”消失了”, 你用其他设备连不上你在wg内网的服务. 不过别的不提供服务的peer这点也无所谓. 请参见Wireguard: Quick start或者Archlinux wiki: Unable to establish a persistent connection behind NAT / firewall 屏蔽公网访问Web UI这个着实有点tricky了, 因为Wireguard转发后流量是从容器内的UDP端口出来, 而不是从宿主机进入. 什么意思呢? 你看了我怎么做就懂了. 所以我直接在docker-compose.yml中修改了管理界面的映射: :51821/tcp(把容器的51821端口映射到) , 然后用宿主机的防火墙Block了端口, 也就是说, 不可能从公网通过宿主机访问这个WebUI了. 然而你在内网的时候, 流量是从UDP端口直接进入容器访问其51821的, 所以只能进入wg内网才能访问WebUI. 此时你甚至可以在宿主机屏蔽掉所有端口, 仅仅暴露一个不起眼的, 随意的UDP端口. 到这里, 我的目的已经达到了. 现在我们可以把分布在异地的服务都保护在了自己的内网之中. 把一扇扇门堵上, 指留一扇小小的UDP防盗门. 嗯,“又不是不能用” |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |